package com.briup.bookstore.service.impl;

import com.briup.bookstore.dto.CategoryAddDTO;
import com.briup.bookstore.dto.CategoryUpdateDTO;
import com.briup.bookstore.mapper.CategoryMapper;
import com.briup.bookstore.po.Category;
import com.briup.bookstore.service.CategoryService;
import com.briup.bookstore.utils.BeanCopyUtils;
import com.briup.bookstore.utils.TreeDataUtils;
import com.briup.bookstore.vo.CategoryInfoVO;
import com.briup.bookstore.vo.CategoryPageVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class CategoryServiceImpl implements CategoryService {

    // 声明dao层对象
    @Autowired
    CategoryMapper categoryMapper;


    public CategoryPageVO getCategoryPage(Integer pageNum, Integer pageSize, String name) {
        return null;
    }

    public List<CategoryInfoVO> getAllCategory() {
        List<Category> categories = categoryMapper.getAll();
        // 这个地方不用跟，看我写一下，体会有多麻烦
        // 因为两个类型不一样，但是呢，里面有些属性值是一样的
        // 所以，我们要把Category里的数据移到CategoryInfoVO
        // 体会过整体的实现逻辑之后，发现这个需求（拷贝对象）将来可以复用
        // 在common里提供了工具类供大家使用
        List<CategoryInfoVO> list = BeanCopyUtils.copyBeanList(categories, CategoryInfoVO.class);

        // list 不符合接口要求，因为没有层级结构分不清楚一级分类和二级分类
        List<CategoryInfoVO> convert = TreeDataUtils.convert(list);

        return convert;
    }

    public Category getCategoryById(Integer id) {
        return null;
    }

    public void addCategory(CategoryAddDTO categoryAddDTO) {

    }

    public void updateCategory(CategoryUpdateDTO categoryUpdateDTO) {

    }

    public void deleteCategory(String ids) {

    }
}
